
// 2208.将数组和减半的最少操作次数
class Solution {
public:
    int halveArray(vector<int>& nums) {
        // 依旧贪心
        // 每一次操作最大数 , 将最大数减半
        double sum = accumulate(nums.begin() , nums.end() , 0.0 );
        double tar = sum / 2.0;
        priority_queue<double> pq(nums.begin() , nums.end());

        int ret = 0;
        while(tar > 0)
        {
            double top = pq.top();
            pq.pop();
            tar -= top / 2.0;
            pq.push(top / 2.0);
            ret++;
        } 
        return ret;
    }
};